layout | title | description | date | categories | comments |
---|---|---|---|---|---|
post |
Interrupt & Context Switching |
Interrupt & Context Switching |
2019-04-30 11:55:00 -0700 |
OS |
true |
현재 실행 중인 프로세스와 별도로 외부에서 이벤트(ex: 입출력 동작의 종료 등)가 일어나면 인터럽트가 발생한다.
-
인터럽트 과정
- 인터럽트 발생
- 프로그램 실행 중지
- 실행 중이던 프로그램의 상태를 보존한다. (다음 실행할 프로그램의 정보가 담긴 Program Counter, 누산기, 스택 메모리, 색인 레지스터, 프로세스 상태와 번호를 Program Control Block에 저장)
- 인터럽트 처리 루틴 실행
- 인터럽트 서비스 루틴 실행
- 상태 복구
- 중단되었던 프로그램 실행 재개
-
입출력 인터럽트 : 입출력 동작이 발생했음을 확인하고 이벤트를 기다리는 프로세스를 준비 상태로 바꾼 후 실행할 프로세스를 결정한다.
-
클록 인터럽트 : 현재 실행 중인 프로세스의 할당 시간을 조사하여 실행 중인 프로세스를 준비 상태로 바꾸고, 다른 프로세스를 실행 상태로 바꾼다.
이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하여 프로세스를 교환하는 과정
- 실행 중인 프로세스에 인터럽트가 발생했을 때, 운영체제가 다른 프로세스를 실행 상태로 바꾸고 제어를 넘겨주는 과정에서 프로세스 간 문맥 교환이 일어난다.
- 하지만, 인터럽트 처리 루틴을 실행한 후, 현재 실행 중인 프로세스를 재실행할 수 있으므로 인터럽트가 무조건 프로세스 간 문맥 교환을 발생시키는 것은 아니다.
- 프로세스가 준비->실행, 실행->준비, 실행->대기 상태로 바뀔 때 발생한다.
- 오버헤드 : 어떤 처리를 하기 위해 드는 간접적인 처리시간, 메모리
- 메모리 속도, 레지스터 수, 특수 명령어의 유무에 따라 결정된다.